home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / rdma / rdma_user_cm.h < prev   
Encoding:
C/C++ Source or Header  |  2008-12-24  |  4.8 KB  |  245 lines

  1. /*
  2.  * Copyright (c) 2005-2006 Intel Corporation.  All rights reserved.
  3.  *
  4.  * This software is available to you under a choice of one of two
  5.  * licenses.  You may choose to be licensed under the terms of the GNU
  6.  * General Public License (GPL) Version 2, available from the file
  7.  * COPYING in the main directory of this source tree, or the
  8.  * OpenIB.org BSD license below:
  9.  *
  10.  *     Redistribution and use in source and binary forms, with or
  11.  *     without modification, are permitted provided that the following
  12.  *     conditions are met:
  13.  *
  14.  *      - Redistributions of source code must retain the above
  15.  *        copyright notice, this list of conditions and the following
  16.  *        disclaimer.
  17.  *
  18.  *      - Redistributions in binary form must reproduce the above
  19.  *        copyright notice, this list of conditions and the following
  20.  *        disclaimer in the documentation and/or other materials
  21.  *        provided with the distribution.
  22.  *
  23.  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  24.  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  25.  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  26.  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
  27.  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
  28.  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  29.  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  30.  * SOFTWARE.
  31.  */
  32.  
  33. #ifndef RDMA_USER_CM_H
  34. #define RDMA_USER_CM_H
  35.  
  36. #include <linux/types.h>
  37. #include <linux/in6.h>
  38. #include <rdma/ib_user_verbs.h>
  39. #include <rdma/ib_user_sa.h>
  40.  
  41. #define RDMA_USER_CM_ABI_VERSION    4
  42.  
  43. #define RDMA_MAX_PRIVATE_DATA        256
  44.  
  45. enum {
  46.     RDMA_USER_CM_CMD_CREATE_ID,
  47.     RDMA_USER_CM_CMD_DESTROY_ID,
  48.     RDMA_USER_CM_CMD_BIND_ADDR,
  49.     RDMA_USER_CM_CMD_RESOLVE_ADDR,
  50.     RDMA_USER_CM_CMD_RESOLVE_ROUTE,
  51.     RDMA_USER_CM_CMD_QUERY_ROUTE,
  52.     RDMA_USER_CM_CMD_CONNECT,
  53.     RDMA_USER_CM_CMD_LISTEN,
  54.     RDMA_USER_CM_CMD_ACCEPT,
  55.     RDMA_USER_CM_CMD_REJECT,
  56.     RDMA_USER_CM_CMD_DISCONNECT,
  57.     RDMA_USER_CM_CMD_INIT_QP_ATTR,
  58.     RDMA_USER_CM_CMD_GET_EVENT,
  59.     RDMA_USER_CM_CMD_GET_OPTION,
  60.     RDMA_USER_CM_CMD_SET_OPTION,
  61.     RDMA_USER_CM_CMD_NOTIFY,
  62.     RDMA_USER_CM_CMD_JOIN_MCAST,
  63.     RDMA_USER_CM_CMD_LEAVE_MCAST,
  64.     RDMA_USER_CM_CMD_MIGRATE_ID
  65. };
  66.  
  67. /*
  68.  * command ABI structures.
  69.  */
  70. struct rdma_ucm_cmd_hdr {
  71.     __u32 cmd;
  72.     __u16 in;
  73.     __u16 out;
  74. };
  75.  
  76. struct rdma_ucm_create_id {
  77.     __u64 uid;
  78.     __u64 response;
  79.     __u16 ps;
  80.     __u8  reserved[6];
  81. };
  82.  
  83. struct rdma_ucm_create_id_resp {
  84.     __u32 id;
  85. };
  86.  
  87. struct rdma_ucm_destroy_id {
  88.     __u64 response;
  89.     __u32 id;
  90.     __u32 reserved;
  91. };
  92.  
  93. struct rdma_ucm_destroy_id_resp {
  94.     __u32 events_reported;
  95. };
  96.  
  97. struct rdma_ucm_bind_addr {
  98.     __u64 response;
  99.     struct sockaddr_in6 addr;
  100.     __u32 id;
  101. };
  102.  
  103. struct rdma_ucm_resolve_addr {
  104.     struct sockaddr_in6 src_addr;
  105.     struct sockaddr_in6 dst_addr;
  106.     __u32 id;
  107.     __u32 timeout_ms;
  108. };
  109.  
  110. struct rdma_ucm_resolve_route {
  111.     __u32 id;
  112.     __u32 timeout_ms;
  113. };
  114.  
  115. struct rdma_ucm_query_route {
  116.     __u64 response;
  117.     __u32 id;
  118.     __u32 reserved;
  119. };
  120.  
  121. struct rdma_ucm_query_route_resp {
  122.     __u64 node_guid;
  123.     struct ib_user_path_rec ib_route[2];
  124.     struct sockaddr_in6 src_addr;
  125.     struct sockaddr_in6 dst_addr;
  126.     __u32 num_paths;
  127.     __u8 port_num;
  128.     __u8 reserved[3];
  129. };
  130.  
  131. struct rdma_ucm_conn_param {
  132.     __u32 qp_num;
  133.     __u32 reserved;
  134.     __u8  private_data[RDMA_MAX_PRIVATE_DATA];
  135.     __u8  private_data_len;
  136.     __u8  srq;
  137.     __u8  responder_resources;
  138.     __u8  initiator_depth;
  139.     __u8  flow_control;
  140.     __u8  retry_count;
  141.     __u8  rnr_retry_count;
  142.     __u8  valid;
  143. };
  144.  
  145. struct rdma_ucm_ud_param {
  146.     __u32 qp_num;
  147.     __u32 qkey;
  148.     struct ib_uverbs_ah_attr ah_attr;
  149.     __u8  private_data[RDMA_MAX_PRIVATE_DATA];
  150.     __u8  private_data_len;
  151.     __u8  reserved[7];
  152. };
  153.  
  154. struct rdma_ucm_connect {
  155.     struct rdma_ucm_conn_param conn_param;
  156.     __u32 id;
  157.     __u32 reserved;
  158. };
  159.  
  160. struct rdma_ucm_listen {
  161.     __u32 id;
  162.     __u32 backlog;
  163. };
  164.  
  165. struct rdma_ucm_accept {
  166.     __u64 uid;
  167.     struct rdma_ucm_conn_param conn_param;
  168.     __u32 id;
  169.     __u32 reserved;
  170. };
  171.  
  172. struct rdma_ucm_reject {
  173.     __u32 id;
  174.     __u8  private_data_len;
  175.     __u8  reserved[3];
  176.     __u8  private_data[RDMA_MAX_PRIVATE_DATA];
  177. };
  178.  
  179. struct rdma_ucm_disconnect {
  180.     __u32 id;
  181. };
  182.  
  183. struct rdma_ucm_init_qp_attr {
  184.     __u64 response;
  185.     __u32 id;
  186.     __u32 qp_state;
  187. };
  188.  
  189. struct rdma_ucm_notify {
  190.     __u32 id;
  191.     __u32 event;
  192. };
  193.  
  194. struct rdma_ucm_join_mcast {
  195.     __u64 response;        /* rdma_ucm_create_id_resp */
  196.     __u64 uid;
  197.     struct sockaddr_in6 addr;
  198.     __u32 id;
  199. };
  200.  
  201. struct rdma_ucm_get_event {
  202.     __u64 response;
  203. };
  204.  
  205. struct rdma_ucm_event_resp {
  206.     __u64 uid;
  207.     __u32 id;
  208.     __u32 event;
  209.     __u32 status;
  210.     union {
  211.         struct rdma_ucm_conn_param conn;
  212.         struct rdma_ucm_ud_param   ud;
  213.     } param;
  214. };
  215.  
  216. /* Option levels */
  217. enum {
  218.     RDMA_OPTION_ID        = 0
  219. };
  220.  
  221. /* Option details */
  222. enum {
  223.     RDMA_OPTION_ID_TOS    = 0
  224. };
  225.  
  226. struct rdma_ucm_set_option {
  227.     __u64 optval;
  228.     __u32 id;
  229.     __u32 level;
  230.     __u32 optname;
  231.     __u32 optlen;
  232. };
  233.  
  234. struct rdma_ucm_migrate_id {
  235.     __u64 response;
  236.     __u32 id;
  237.     __u32 fd;
  238. };
  239.  
  240. struct rdma_ucm_migrate_resp {
  241.     __u32 events_reported;
  242. };
  243.  
  244. #endif /* RDMA_USER_CM_H */
  245.